// map.h
// 25 September 2011
// Purpose: Header for Map class

#ifndef MAP_H_
#define MAP_H_
class Map
{
public:
	Map();						// Default Constructor,creates a blank map of 32 by 32
	Map(const int &,const int *);					// Takes size x, size y, and 1D int array and constructs map.
	Map(const Map &);//copy constructor for map of the same class.
	Map(const MapGen &);//copy constructor that takes a mapGen object.

	struct coordinate & getStart() const;//returns starting position of map

	bool atFinish(const struct coordinate &);//returns true of the coordinate passed is equal to the finish position of the map. We will call this function from our mouse object to see if we're at the finish.

	void displayMap();		// Prints map to cout

	int getY() const;//returns height of map
	int getX() const;//returns width of map

	bool mapImport(const int &,const int * &);//takes a size and 1-d array

	Map & operator=(const Map &);//assignment operator for map of the same class.
	Map & operator=(const MapGen &);//assignment operator for taking a mapGen object.

	struct coordinate //coordinate struct which has an _x and _y value
	{
	int _x;//x position
	int _y;//y position
	};
private:
	struct coordinate start;//starting position of map
	struct coordinate finish;//finish position of map
	int * _map;//1-D array
	int _x;//height of maze
	int _y;//height of maze
};
#endif // MAP_H